In cloud computing or client-server environments, a server, a group of servers, or a cluster of servers may communicate with multiple clients. For example, clients may include virtual machines (VMs), Internet of Things (IoT) gateways, cross cloud infra, computing devices, and the like. In client-server environments, a server may communicate with multiple clients, with each client may report performance data/metrics to the server for storage and performance analysis.
Further, resources, such as a central processing unit (CPU), memory, storage (e.g., input/output (I/O)), network, and the like, may play a role in troubleshooting any performance related issues. For example, management functions such as load balancing and resource management in a virtual infrastructure may monitor VM resource usage (e.g., CPU usage, memory usage, storage usage, network usage, and the like) and perform load balancing of the VMs across the servers, subject to a set of constraints. For example, load balancing and resource management may involve tracking the resource usage and implement any remedial actions, such as placement and live migrations of VMs. Also, management functions may include additional responsibilities such as decisions about placing a VM that is newly being powered-on onto a right server to appropriately distribute the load. In order to make such decisions effective, load-balancing and resource management algorithms may maintain and use historical resource usage data of the VMs.
The drawings described herein are for illustration purposes only and are not intended to limit the scope of the present subject matter in any way.